בקובץ כתוב לי לדוגמה:
אני רוצה לעשות פונקציה כלשהי שיהיה בה ארגומנט אחד ($val לדוגמה) שבעצם תגיד לי מה שיש אחרי הנקודותיים - במקרה הזה root.
איך אני עושה את זה?
תודה!
24 תשובות
ולמה שלא תעשה בקונפיג שלך:
ואז תעשה לו פשוט
אבל לפעמים אני רוצה לשנות את הערכים, אז אני אכתוב על הערך עצמו.
אם אני אעשה את זה במשתנה, לא אוכל לשנות את הערך. אולי אשנה, אבל רק כל עוד השינוי נמצא בקוד. זה לא פיזית ישנה את זה, כך שאוכל להיות בטוח.
אני מתכוון שאם לדוגמה ארצה דרך הלוח ניהול או משהו לשנות, מבלי לגעת בקוד (config.php) אז אוכל. מכוון שארצה לקבל נתונים מ config.php ואקבל לדוגמה root, שבכלל בדף אחר קבעתי שזה יהיה orel לדוגמה.
אם זה פורמט קבוע, אז כך את התוכן של הקובץ ותפעיל explode.
אם זה קונפיג, מספיק פשוט ליצור מערך ולאנקלד אותו (לא בהכרח צריך ליצור משתנה חדש כמו שהראו למעלה).
צודק אחי! אבל איך אוכל לעשות את ה explode רק איפה שאני בוחר? לדוגמה יש לי מספר שורות, ובכל שורה יש ככה: key:val, ואני ארצה רק איפה שה key יהיה host?
אבל שוב, לא אוכל לאנקלד את הקונפיג מהסיבה שכתבתי למעלה. אם ארצה לשנות את התוכן של הקובץ וכד'?
נו אז תשנה, אז מה? את הערך אתה יכול לשנות כמה שבא לך. נניח וה"מפתח" שלך זה host והערך הוא הכתובת של השרת. הרי אתה לא תשנה כל פעם את השם של המפתח? וזה כל התפקיד בעצם של הקונפיג. ניתן לשנות את הערך כמה שבא לך כל עוד המפתח נשאר אותו מפתח. אחרת תצטרך לשנות את זה בכל מקום אחר. אם אתה הולך על explode, אז מה הבעיה? תבדוק איזה ערך בדיוק מכילה השורה ותפעיל את הפונקצייה בהתאם.
json_encode / json_encode
לא התכוונתי ל json_encode, אבל לא משנה.. נראה לי שאני אלך על השיטה של האינקלוד, אבל יש לי בעיה..
זה הקונפיג:
return array
(
'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'imgup'
);
?>
אבל אני מקבל שגיאה:
(שורה 3 זה בדיוק איפה שמתחיל ה 'host').
json בתור קונפיג זה משהו.
אין לך בעיה בקוד. אבל למה שלא תעשה ככה:
$config = array();
$config['key'] = 'value';
למה ליצור משתנה חדש כל הזמן?
אבל אני ארצה להשתמש במשתנה $config הזה בכל מיני דפים כמו sql.class.php, system.class.php, image.class.php, וכו'... כי אם לדוגמה אני עושה את המשתנה הזה ב Index.php וב sql.class.php שזה בתיקייה נפרדת בכלל, אני מנסה לעשות echo למשתנה(לדוגמה ל $config['host']) אז זה לא עובד. אבל אם המשתנה נמצא ב index.php ודרך ה Index.php אני עושה echo זה כן עובד.. כאילו אני צריך שזה יהיה מין משתנה כזה לכל המערכת, גלובאלי כזה.
יכול להיות שהשיטה היא פשוט להשתמש ב $GLOBALS?
ההסבר שלך לא מובן. המשתנה הזה יעבוד בכל דף שבו תאנקלד את הקובץ הנ"ל. זה לא יהיה נגיש בטווחים מסוימים כמו למשל פונקציות, שם תצטרך להפעיל global. ובכל מקרה אתה תצטרך להשתמש בזה (global), גם בשיטה הזאת וגם בשיטה האחרת. אם תספק קוד מדוייק שלא עובד אז ניתן יהיה לאמר מה אתה עושה לא נכון.
תן לי להבין נכון. אתה מתכוון כאילו לעשות את המשתנה $config בקובץ האינדקס, או בקובץ שונה בשם config.php שאותו אני אאנקלד לכל דף?
ואני בעצם תמיד אצטרך להשתמש ב $GLOBALS מכוון שהכל אצלי זה פונקציות (OOP).
אני מתכוון לכך שתיצור קובץ נפרד לקונפיג (config.php לדוגמא) שאותו תאנקלד איפה שצריך. ככה כל בן אדם נורמלי עושה וכן מערכות גדולות.
אוקיי, עשיתי. אבל בשביל להשתמש במשתנים אני אצטרך להשתמש ב $GLOBALS.. אין איזו דרך קלה או טובה יותר?
רגע, יש בעיה! עשיתי גם קובץ setup.php שבו אוכל להגדיר את האתר (בפעם הראשונה שמתקינים אותו), ואני ארצה שהפרטים שהמשתמש כותב בטופס, יהיו בעצם בקובץ config.php.. אבל אי אפשר לעשות את זה! מה אני עושה?
@ctulhu
מה רע ב json בתור קונפיג? XML זה בסדר ו JSON לא? (שגם עובד הרבה יותר מהר).
@Kzrh
ואתה לא יודע איך לכתוב מחרוזת לקובץ? php.net/file_put_contents
אחי עזוב עכשיו את הרעיון עם הקובץ והכל.. אני פשוט רוצה config.php שיהיה בו מערך שבמערך יהיה לדוגמה מפתח בשם host שיהיה שווה ל localhost. לאחר שאבצע בו שינוי באמצעות טופס (setup.php) זה באמת ישתנה. אם אני עושה בקובץ setup.php:
וב config.php זה בכלל ככה:
אז כשאני אנסה להדפיס את זה (בעזרת ה index.php לדוגמה ששם זה מאונקלד-require) זה יכתוב לי localhost ולא hey.
ב setup.php אתה עורך פיזית את הקובץ config, לא סתם שם ערכים במערך.
@משתמש_93144
כי אין בזה צורך כאן. בשביל מה להפעיל פונקציות ולעשות מניפולציות עליו כשליצור מערך אחיד זה יהיה מהיר יותר ונוח יותר? חוץ מזה, הפורמט שלו טיפה שונה ממה שהוא רוצה.
ול-Kzrh - לא ברור לי מה הבעיה שלך. יש קובץ config.php שבו יש את המערך הנ"ל. יש לך את include/require שיכניסו לך את התוכן של הקובץ לקובץ אחר. זה שווה ערך ליצירת מערך באותו קובץ שאתה מאנקלד בו את config. אם זה לא עובד אז הסיבה היא שאתה מוציא איבר ממערך בטווח אחר (לא ב-global scope) או שאתה פשוט עשית משהו לא נכון.
>> ואיך אני עורך אותו פיזית?
php.net/file_put_contents
אתה כנראה לא מבין cthulhu.
יש לי קובץ config וקובץ setup, אוקיי? בקובץ $config יש לי את זה:
$config['host'] = 'localhost';
בקובץ setup יש לי טופס ובו המשתמש צריך לרשום host.. את ה host שהמשתמש רושם אני רוצה לשים למשתנה $config['host']. אז בקובץ ה SETUP עשיתי ככה:
כאן יש את הטופס והכל...
$config['host'] = 'otherhost';
יש לי גם את קובץ האינדקס (Index.php) שגם בו יש את ה REQUIRE לקובץ הקונפיג. אז באינדקס עשיתי:
אבל במקום שיציג לי otherhost זה הציג לי localhost (שזה הערך המקורי מהקובץ קונפיג, שניסיתי בעצם לשנות דרך ה SETUP).
אני יודע למה, כי המשתנה כבר מוגדר בקונפיג. מה שאני רוצה זה להגדיר אותו מחדש, פיזית. איך אני עושה את זה?